/**
 * Класс отображения статусов
 */ 
function CStatuses(parentClass) {
	var thisCStatuses	= this;
	var parentClass 	= parentClass;
	var AJAXQuery 		= parentClass.getAJAXQuery();
	var statusesArray 	= new Array();

	/**
	 * Конструктор класса
	 */
	this.__CStatuses = function() 
	{
		AJAXQuery.MakeAJAXQuery("GetAllStatuses",undefined, thisCStatuses.ajaxStatusesReturn);
	};
	/**
	 * @return Ссылка на объект обена AJAX
	 * @type Object
	 */
	this.getAJAXQuery = function() 
	{
		return AJAXQuery;
	};
	/**
	 * @return массив статусов
	 * @type array
	 */
	this.getStatusesArray = function() 
	{
		return statusesArray; 
	};
	/**
	 * @return Возвращает номер статуса по его ID
	 * @type integer
	 */
	var getStatusNum = function (id) 
	{
		for (var i=0; i<statusesArray.length; i++) {
			if (statusesArray[i].id == id) {
				return i;
			}
		}
		return undefined; 
	};
	/**
	 * @return Возвращает строку статуса
	 * @type string
	 */  
	this.getStatusName = function(id) 
	{
		var num = getStatusNum(id);
		if (num !=undefined) {
			return statusesArray[num].alias;
		} else {
			return '';
		}
	};
	/**
	 * @return Возвращает картинку статуса
	 * @type string
	 */ 
	this.getStatusPicture = function(id) 
	{
		var num = getStatusNum(id);
		if (num !=undefined) {
			return statusesArray[num].picture;
		} else {
			return '';
		}
	};
	/**
	 * @return Возвращает картинку статуса
	 * @type bool
	 */
	this.getStatusIsOnline = function(id) 
	{
		var num = getStatusNum(id);
		if (num !=undefined) {
			return statusesArray[num].isonline;
		} else {
			return false;
		};
	};
	/**
	 * Вызывается при успешном получении данных с сервера
	 */
	this.ajaxStatusesReturn = function(xml) 
	{
		var statuses = $("statuses > s",xml);
		var currentElement = undefined;
		
		AddLogMessage('Ajax query return: ' + statuses.length + ' statuses');
		var userStatusMenuWin = $('#DialogContactList *.cl-user-status-menu');
		
		//alert(statuses.length);
		
		for (var i=0; i<statuses.length; i++) {
			currentElement = statuses.eq(i);
			
			var newStatus = {
					id:			currentElement.attr('n'),
					uid:		currentElement.attr('i'),
					protocol:	currentElement.attr('pl'),
					alias:		currentElement.attr('a'),
					picture:	currentElement.attr('p'),
					userstatus:	currentElement.attr('s'),
					isonline:	(currentElement.attr('io') == "1")
				};

			statusesArray[statusesArray.length] = newStatus; 
			
			if (newStatus.userstatus != "0") {

				var newStatusWin = $('');
				if (newStatus.protocol == protocols.icq) {
					var newStatusWin = $(defaultTemplate.statusTemplate.replace(/{name}/g, newStatus.alias)).appendTo(userStatusMenuWin);
					$('*[@type=cl-user-status]', newStatusWin)
						.addClass(defaultTemplate.contactStatusIconClass)
						.addClass(defaultTemplate.contactStatusClass)
						.addClass(newStatus.picture);
				}
				
				newStatusWin
					.hover(
						function(){
							$(this).addClass('ui-state-hover');
						},
						function(){
							$(this).removeClass('ui-state-hover');
						});
			}
		}	
	};
	
	// Инициализация класса
	this.__CStatuses();
};
